package br.ueg.ezrides.modelo.entidades;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import br.com.vexillum.model.UserBasic;
import br.com.vexillum.model.annotations.SearchField;
import br.com.vexillum.model.annotations.ValidatorClass;

@SuppressWarnings("serial")
@ValidatorClass(validatorClass = "br.ueg.ezrides.control.validator.UserValidator")
@Entity
public class User extends UserBasic {
	
	public User(){
		this.modifSenha = false;
		this.ativo = true;
		this.categoria = new Categoria(2, "Usuario");
	}

	@SearchField
	@Column(name="ativo", unique=false, nullable=false, updatable=true)
	private Boolean ativo;
	
	@Column(name="modif_senha", unique=false, nullable=false, updatable=true)
	private Boolean modifSenha;
	
	@Column(name="ultimo_acesso", unique=false, nullable=true, updatable=true)
	private Date ultimoAcesso;
	
	@ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="id_categoria", unique=false, nullable=false, updatable=true)
	private Categoria categoria;
	
	@SearchField
	@ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="id_estado", unique=false, nullable=false, updatable=true)
	private Estado estado;
	
	@SearchField
	@Column(name="cidade", unique=false, nullable=false, updatable=true, length=100)
	private String cidade;
	
	@SearchField
	@Column(name="endereco", unique=false, nullable=false, updatable=true, length=500)
	private String endereco;
	
	@SearchField
	@Column(name="numero", unique=false, nullable=false, updatable=true, length=10)
	private String numero;
	
	@SearchField
	@Column(name="bairro", unique=false, nullable=false, updatable=true, length=100)
	private String bairro;
	
	@SearchField
	@Column(name="cep", unique=false, nullable=false, updatable=true)
	private Long cep;
	
	@Column(name="telefone", unique=false, nullable=false, updatable=true)
	private Long telefone;
	
	@Column(name="celular", unique=false, nullable=true, updatable=true)
	private Long celular;

	public Boolean getAtivo() {
		return ativo;
	}

	public void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}

	public Boolean getModifSenha() {
		return modifSenha;
	}

	public void setModifSenha(Boolean modifSenha) {
		this.modifSenha = modifSenha;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public Date getUltimoAcesso() {
		return ultimoAcesso;
	}

	public void setUltimoAcesso(Date ultimoAcesso) {
		this.ultimoAcesso = ultimoAcesso;
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public Long getCep() {
		return cep;
	}

	public void setCep(Long cep) {
		this.cep = cep;
	}

	public Long getTelefone() {
		return telefone;
	}

	public void setTelefone(Long telefone) {
		this.telefone = telefone;
	}

	public Long getCelular() {
		return celular;
	}

	public void setCelular(Long celular) {
		this.celular = celular;
	}
}
